package com.jxpanda.commons.toolkit;


import java.nio.charset.StandardCharsets;
import java.util.Base64;

/**
 * 自己封装的Base64工具，只做了一个事情，封装了java.util.Base64的门面
 * 经常一不小心就用到sun包的Base64，杜绝这种情况的发生，所以封装一个门面来使用
 *
 * @author Panda
 */
public class Base64Kit {

    public static byte[] encode(byte[] data) {
        return encoder().encode(data);
    }

    public static byte[] decode(byte[] data) {
        return decoder().decode(data);
    }

    /**
     * String类型入参和返回值的重载，方便使用
     */
    public static byte[] encode(String content) {
        return encode(content.getBytes());
    }

    /**
     * String类型入参和返回值的重载，方便使用
     */
    public static byte[] decode(String content) {
        return decode(content.getBytes());
    }

    public static String encodeToString(byte[] data) {
        return new String(encode(data), StandardCharsets.UTF_8);
    }

    public static String decodeToString(byte[] data) {
        return new String(decode(data), StandardCharsets.UTF_8);
    }

    public static String encodeToString(String content) {
        return encodeToString(content.getBytes());
    }

    public static String decodeToString(String content) {
        return decodeToString(content.getBytes());
    }

    private static Base64.Encoder encoder() {
        return Base64.getEncoder();
    }

    private static Base64.Decoder decoder() {
        return Base64.getDecoder();
    }

}
